<?php
session_start();
require_once('path.php');
require_once( SOJ_ROOT.'/include/function/lib.php');

require_once('Log.php') ;

//主要是为了得到本页要显示试题信息的题号
//@todo 注意此处可能产生注入点
$request = $_GET;
if( empty( $request['no']) ){
	//没有提供题号,直接跳转到problem_list页面
}else{
	$no = $request['no'];
}

$tpl = new my_smarty();
$tpl->assign( 'active' , 'problem' ) ;

//若用户已经登录,则重定向到首页
//@todo 之后可以改进为用户之前的页面
if( !empty($_SESSION['username']) ){
	$tpl->assign( 'username' , $_SESSION['username'] );
}

//处理由do_singin.php页面保存在会话中的错误信息
if( !empty($_SESSION['errors']) ){

	$tpl->assign( 'errors' , $_SESSION['errors']  );
	//清除之前的错误信息
	$_SESSION['errors'] = array();
}

try{
$db = db_connect();
$problem = new problem_process( $db ) ;
$problem->load( 'problem_no' , $no ); 
$problem_test_right=new problem_test_right_process($db);
//


//@todo 是传入整个数组 由模板判断如何显示 还是传入单独的值?
//可以由db_obj.class提供一个get_all()方法返回所有的值
$problem_no = $no ;
$title = $problem->get('title');
$source = $problem->get('source');
$content = $problem->get('content');
$best_user = $problem->get('best_user');
$time_limit = $problem->get('time_limit');
$mem_limit = $problem->get('mem_limit');
$input = $problem->get('input');
$output = $problem->get('output');
$sample_input = $problem->get('sample_input');
$sample_output = $problem->get('sample_output');
$tip = $problem->get('tip');

$tpl->assign( 'problem_no' , $problem_no );
$tpl->assign( 'title' , $title );
$tpl->assign( 'source' , $source );
$tpl->assign( 'best_user' , $best_user );
$tpl->assign( 'time_limit' , $time_limit );
$tpl->assign( 'mem_limit' , $mem_limit );
$tpl->assign( 'content' , $content );
$tpl->assign( 'input' , $input );
$tpl->assign( 'output' , $output );
$tpl->assign( 'sample_input' , $sample_input );
$tpl->assign( 'sample_output' , $sample_output );
$tpl->assign( 'tip' , $tip );

$tpl->display('problem_detail.tpl');
}catch(Exception $e){
	echo $e->getMessage();
}
